/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package LibreriaServer;

import Message.Mensaje;
import Persistencia.ArchivoDatos;
import java.io.File;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Marisol
 */
public final class LServer {

    public LServer() {
    }
    public static final String Servidor = "Servidor";
    public static final String Cliente = "Usuario";
    public static final String Pach = new File("").getAbsolutePath();
    public static final String Separador = File.separator;
    public static final String Ser = "ser";
    public static final String Data = "Data";
    public static final String Dir = "dir";
    public static final String ejecutable = "exe";
    public static final String saltline = "\r\n";

    public static String patchServer() {
        return (LServer.Pach + LServer.Separador + LServer.Servidor);

    }

    public static String patchUser() {
        return (LServer.Pach + LServer.Separador + LServer.Cliente);

    }

    public static String Imprimir(ArrayList Lista) {
        String s = "";
        int n = 0;
        while (n < Lista.size()) {
            s = s + Lista.get(n).toString() + "\r\n";
            n++;
        }
        return s;
    }

    public static int isUser(String namesender, String name) {
        return ((namesender.equals(name)) ? 1 : 0);
    }

    public static boolean existeString(ArrayList lista, String valor) {

        int cantidadUserServer = lista.size();
        int numerocliente = 0;
        while (cantidadUserServer > 0 && 0 == (numerocliente = isUser((String) lista.get(cantidadUserServer - 1), valor))) {
            cantidadUserServer--;
        }
        return numerocliente != 0;
    }

    public static void mostrarLista(JTable salida, ArrayList lista) {
        salida.clearSelection();
        DefaultTableModel Model = null;
        Model = (DefaultTableModel) salida.getModel();
        Model.setNumRows(lista.size());
        String dato;
        for (int i = 0; i < lista.size(); i++) { // Recorriendo Los Datos que se Encuentran en el Arraylist
            dato = (String) lista.get(i); // Convertiendo La Lista en Tipo Alumno
            Model.setValueAt(dato, i, 0);
        }
        salida.updateUI();

    }

    public static void mostrarCombox(JComboBox combox, ArrayList lista) {

        combox.removeAll();
        String dato;
        for (int i = 0; i < lista.size(); i++) { // Recorriendo Los Datos que se Encuentran en el Arraylist
            dato = (String) lista.get(i); // Convertiendo La Lista en Tipo Alumno
            combox.addItem(dato);
        }
        combox.updateUI();

    }

    public static void mostrarmensaje(ArrayList<Mensaje> mensaje, JTable tablamensajes) {

        if (mensaje != null) {
            eliminarVacio(mensaje);
            tablamensajes.removeAll();
            DefaultTableModel Model = null;
            Model = (DefaultTableModel) tablamensajes.getModel();

            Model.setNumRows(mensaje.size());

            Mensaje mensaje1 = null;

            for (int i = 0; i < mensaje.size(); i++) { // Recorriendo Los Datos que se Encuentran en el Arraylist


                mensaje1 = mensaje.get(i); // Convertiendo La Lista en Tipo Alumno
                if (mensaje1 != null) {
                    Model.setValueAt(mensaje1.Sender(), i, 0);
                    Model.setValueAt(mensaje1.asuntoMensaje(), i, 1);
                    Model.setValueAt(mensaje1.mensaje(), i, 2);
                }
            }
            tablamensajes.updateUI();
        }
    }

    public static void eliminarVacio(ArrayList lista) {
        Object dato = null;


        for (int i = 0; i < lista.size(); i++) {


            dato = lista.get(i);

            if (dato == null) {
                lista.remove(i);
                i--;

            }
        }

    }

    private static String ImprimirTxt(Mensaje mensaje) {
        String mensajeprint = "";
        mensajeprint = "Envia : " + mensaje.Sender() + saltline
                + "Recibe : " + mensaje.NombreDestino() + saltline
                + "Asunto: " + mensaje.asuntoMensaje() + saltline
                + "Mensaje: " + mensaje.mensaje() + saltline;


        return mensajeprint;

    }

    public static void guardarMensaje(String direccion, Mensaje mensaje) {
        try {
            ArchivoDatos<String> archivo = new ArchivoDatos<String>();
            String print = ImprimirTxt(mensaje);
            archivo.guardarMensaje(print, direccion);

        } catch (Exception ex) {
            Logger.getLogger(LServer.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
}
